import Vue from "vue"
import VueRouter from "vue-router"

Vue.use(VueRouter)

// 对VueRouter 原型上的push方法进行增强
// let originPush = VueRouter.prototype.push

// VueRouter.prototype.push = function(local,okCallback,errorCallback){
//     if(okCallback || errorCallback){
//         originPush.call(this,local,okCallback,errorCallback)
//     }else{
//         originPush.call(this,local).catch(()=>{})
//     }
// }

// 封装所有的方法  【增强】
function enhance(source,type){
    // 备份方法
    let origin = source.prototype[type]

    // 增强原型上的某个方法  使用函数传递参数
    source.prototype[type] = function(local,okCallback,errorCallback){
        if(okCallback || errorCallback){
            origin.call(this,local,okCallback,errorCallback)
        }else{
            origin.call(this,local).catch(()=>{})
        }
    }
}

// 调用函数传递需要增强的对象和方法
enhance(VueRouter,"push")
enhance(VueRouter,"replace")




import routes from "./routes"

export default new VueRouter({
    mode:"history",
    routes,
    scrollBehavior(a,b,c){
        if(c){
            return c
        }else{
            return {x:0,y:0}
        }
    }
})